/*
 * Copyright © 2024-2025 Wenze Wei
 *
 * This file is part of StadionOS.
 *
 * This Source Code Form is subject to the terms of the GNU General Public License, v. 2.0.
 * You can obtain a copy of the GPL at
 * https://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
 *
 * Software distributed under the License is distributed on an "AS IS" basis,
 * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for
 * the specific language governing rights and limitations under the License.
 */

#include "../include/string.h"

/**
 * @brief Find the first occurrence of a substring in a string.
 *
 * @param haystack The string to search in.
 * @param needle The substring to search for.
 * @return A pointer to the first occurrence of needle, or NULL if not found.
 */
char *Sstrstr(const char *haystack, const char *needle) {
    if (!*needle) return (char *)haystack;

    while (*haystack) {  
        const char *h = haystack;  
        const char *n = needle;  

        while (*h && *n && *h == *n) {  
            h++;  
            n++;  
        }  
        if (!*n) return (char *)haystack;
        haystack++;  
    }  
    return NULL;
}
